Skip to content

source map 怎么用

解决开发与实际运行代码不一致,帮助我们 debugger 到原始代码的技术

关键字

cheap: 只看行,不看列,无论生产还是开发都会使用这个,列信息是没有意义的 module: 不可忽略,我们需要定位到原始的 jsx ts 原始代码,而不是编译后的 source-map: 需要 .map 文件,故不可忽略 eval:

  • eval 包裹模块代码,eval 模式是使用 eval 将 webpack 中每个模块包裹,然后在模块末尾添加模块来源//# souceURL, 依靠 souceURL 找到原始代码的位置
  • eval 模式有点特殊, 它和其他模式不一样的地方是它依靠 sourceURL 来定位原始代码, 而其他所有选项都使用.map 文件的方式来定位

例子

eval-source-map 生成 sourcemap

js
webpackJsonp([1],[
  function(module,exports,__webpack_require__){
    eval(
      ...
      //# sourceMappingURL=data:application/json;charset=utf-8;base64,...
    )
  },
  function(module,exports,__webpack_require__){
    eval(
      ...
      //# sourceMappingURL=data:application/json;charset=utf-8;base64,...
    )
  },
  function(module,exports,__webpack_require__){
    eval(
      ...
      //# sourceMappingURL=data:application/json;charset=utf-8;base64,...
    )
  },
  ...
]);

cheap-module-eval-source-map 不包含列 cheap-eval-source-map 无法看到真正的源码

常用配置

开发环境使用:cheap-module-eval-source-map 生产环境使用:cheap-module-source-map

生产环境不用 eval, 这会让文件变得极大

在 MIT 许可下发布